//
// Created by Semir on 2020/6/6.
//

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool cmp(vector<int>& a, vector<int>& b) {
    return a[0] < b[0];
}

void expandRes(vector<vector<int>>& res, int start, int cnt) {
    vector<int> newVec(cnt);
    for (int i = 0; i < cnt; i++) {
        newVec[i] = start;
        start++;
    }
    res.emplace_back(newVec);
}

vector<vector<int>> FindContinuousSequence(int sum) {
    vector<vector<int>> res;
    for (int i = 2; i < sum; i++) {
        if (sum % i != 0) {
            continue;
        }
        int avg = sum / i;
        if (avg <= i / 2) {
            break;
        }
        if (i % 2 == 0) {
            if (avg % 2 == 1 && avg / 2 >= i) {
                expandRes(res, avg / 2 - i + 1, i * 2);
            }
        } else {
            if (avg - (i / 2) > 0) {
                expandRes(res, avg - (i / 2), i);
            }
        }
    }
    if (sum % 2 == 1 && sum / 2 > 0) {
        vector<int> firstVec = {sum / 2, sum / 2 + 1};
        res.emplace_back(firstVec);
    }
    sort(res.begin(), res.end(), cmp);
    return res;
}

int main() {
    vector<vector<int>> res = FindContinuousSequence(16);
    cout << res.size() << endl;
    return 0;
}